<!DOCTYPE html>
<html lang="zh-CN">
<head><meta name="generator" content="Hexo 3.9.0">

    <!--[if lt IE 9]>
        <style>body {display: none; background: none !important} </style>
        <meta http-equiv="Refresh" Content="0; url=//outdatedbrowser.com/" />
    <![endif]-->

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="format-detection" content="telephone=no">
<meta name="author" content="Ren ZM">



<meta name="description" content="不可能搞懂的分布式系统。这里整理搜索文字。">
<meta name="keywords" content="note">
<meta property="og:type" content="article">
<meta property="og:title" content="不会懂分布式系统的">
<meta property="og:url" content="https://littlepro.gitee.io/mytpages/2019/10/25/不会懂分布式系统的/index.html">
<meta property="og:site_name" content="Xbiubiubiu">
<meta property="og:description" content="不可能搞懂的分布式系统。这里整理搜索文字。">
<meta property="og:locale" content="zh-CN">
<meta property="og:updated_time" content="2019-11-02T02:25:30.205Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="不会懂分布式系统的">
<meta name="twitter:description" content="不可能搞懂的分布式系统。这里整理搜索文字。">

<link rel="apple-touch-icon" href="/mytpages//apple-touch-icon.png">


    <link rel="alternate" href="/atom.xml" title="Xbiubiubiu" type="application/atom+xml">



    <link rel="shortcut icon" href="/mytpages//favicon.png">



    <link href="//cdn.bootcss.com/animate.css/3.5.1/animate.min.css" rel="stylesheet">



    <link href="//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.min.css" rel="stylesheet">



    <script src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script>
    <link href="//cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-minimal.css" rel="stylesheet">


<link rel="stylesheet" href="/mytpages/css/style.css">



<link href="//cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">


<title>不会懂分布式系统的 | Xbiubiubiu</title>

<script src="//cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<script src="//cdn.bootcss.com/clipboard.js/1.5.10/clipboard.min.js"></script>

<script>
    var yiliaConfig = {
        fancybox: true,
        animate: true,
        isHome: false,
        isPost: true,
        isArchive: false,
        isTag: false,
        isCategory: false,
        fancybox_js: "//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.min.js",
        scrollreveal: "//cdn.bootcss.com/scrollReveal.js/3.1.4/scrollreveal.min.js",
        search: false
    }
</script>


    <script> yiliaConfig.jquery_ui = [false]; </script>



    <script> yiliaConfig.rootUrl = /mytpages/; </script>







    <script src="/mytpages/live2d-widget/autoload.js"></script>


</head></html>
<body>
  <div id="container">
    <div class="left-col">
    <div class="overlay"></div>
<div class="intrude-less">
    <header id="header" class="inner">
        <a href="/mytpages/" class="profilepic">
            <img src="/mytpages//img/avatar.png" class="animated zoomIn">
        </a>
        <hgroup>
          <h1 class="header-author"><a href="/mytpages/">Ren ZM</a></h1>
        </hgroup>

        
        <p class="header-subtitle">--ロリは正義</p>
        

        


        
            <div id="switch-btn" class="switch-btn">
                <div class="icon">
                    <div class="icon-ctn">
                        <div class="icon-wrap icon-house" data-idx="0">
                            <div class="birdhouse"></div>
                            <div class="birdhouse_holes"></div>
                        </div>
                        <div class="icon-wrap icon-ribbon hide" data-idx="1">
                            <div class="ribbon"></div>
                        </div>
                        
                        <div class="icon-wrap icon-link hide" data-idx="2">
                            <div class="loopback_l"></div>
                            <div class="loopback_r"></div>
                        </div>
                        
                        
                        <div class="icon-wrap icon-me hide" data-idx="3">
                            <div class="user"></div>
                            <div class="shoulder"></div>
                        </div>
                        
                    </div>
                    
                </div>
                <div class="tips-box hide">
                    <div class="tips-arrow"></div>
                    <ul class="tips-inner">
                        <li>菜单</li>
                        <li>标签</li>
                        
                        <li>友情链接</li>
                        
                        
                        <li>关于我</li>
                        
                    </ul>
                </div>
            </div>
        

        <div id="switch-area" class="switch-area">
            <div class="switch-wrap">
                <section class="switch-part switch-part1">
                    <nav class="header-menu">
                        <ul>
                        
                            <li><a href="/mytpages//mytpages/../">主页</a></li>
                        
                            <li><a href="/mytpages//mytpages/../archives/">所有文章</a></li>
                        
                            <li><a href="/mytpages//mytpages/../tags/">标签云</a></li>
                        
                            <li><a href="/mytpages//mytpages/../about/">关于我</a></li>
                        
                        </ul>
                    </nav>
                    <nav class="header-nav">
                        <ul class="social">
                            
                                <a class="fa Email" href="mailto:784709355@qq.com" title="Email"></a>
                            
                                <a class="fa GitHub" href="https://github.com/rzzz" title="GitHub"></a>
                            
                                <a class="fa Gitee" href="https://gitee.com/littlepro" title="Gitee"></a>
                            
                                <a class="fa V2EX" href="/mytpages/" title="V2EX"></a>
                            
                                <a class="fa 知乎" href="/mytpages/" title="知乎"></a>
                            
                                <a class="fa 网易云音乐" href="/mytpages/" title="网易云音乐"></a>
                            
                                <a class="fa bilibili" href="/mytpages/" title="bilibili"></a>
                            
                        </ul>
                    </nav>
                </section>
                
                
                <section class="switch-part switch-part2">
                    <div class="widget tagcloud" id="js-tagcloud">
                        <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/JavaScript/">JavaScript</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/MySql/">MySql</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/NodeJS/">NodeJS</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/Nodejs/">Nodejs</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/PS3/">PS3</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/c/">c</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/c/">c++</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/cocos2dx/">cocos2dx</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/markdown/">markdown</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/note/">note</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/sort/">sort</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/test/">test</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/tool/">tool</a></li><li class="tag-list-item"><a class="tag-list-link" href="/mytpages/tags/usage/">usage</a></li></ul>
                    </div>
                </section>
                
                
                
                <section class="switch-part switch-part3">
                    <div id="js-friends">
                    
                      <a class="main-nav-link switch-friends-link" href="https://hexo.io">Hexo</a>
                    
                      <a class="main-nav-link switch-friends-link" href="https://pages.github.com/">GitHub</a>
                    
                      <a class="main-nav-link switch-friends-link" href="http://moxfive.xyz/">MOxFIVE</a>
                    
                    </div>
                </section>
                

                
                
                <section class="switch-part switch-part4">
                
                    <div id="js-aboutme">ロリは正義</div>
                </section>
                
            </div>
        </div>
    </header>                
</div>
    </div>
    <div class="mid-col">
      <nav id="mobile-nav">
      <div class="overlay">
          <div class="slider-trigger"></div>
          <h1 class="header-author js-mobile-header hide"><a href="/" title="回到主页">Ren ZM</a></h1>
      </div>
    <div class="intrude-less">
        <header id="header" class="inner">
            <a href="/mytpages/" class="profilepic">
                <img src="/mytpages//img/avatar.png" class="animated zoomIn">
            </a>
            <hgroup>
              <h1 class="header-author"><a href="/mytpages/" title="回到主页">Ren ZM</a></h1>
            </hgroup>
            
            <p class="header-subtitle">--ロリは正義</p>
            
            <nav class="header-menu">
                <ul>
                
                    <li><a href="/mytpages/../">主页</a></li>
                
                    <li><a href="/mytpages/../archives/">所有文章</a></li>
                
                    <li><a href="/mytpages/../tags/">标签云</a></li>
                
                    <li><a href="/mytpages/../about/">关于我</a></li>
                
                <div class="clearfix"></div>
                </ul>
            </nav>
            <nav class="header-nav">
                        <ul class="social">
                            
                                <a class="fa Email" target="_blank" href="mailto:784709355@qq.com" title="Email"></a>
                            
                                <a class="fa GitHub" target="_blank" href="https://github.com/rzzz" title="GitHub"></a>
                            
                                <a class="fa Gitee" target="_blank" href="https://gitee.com/littlepro" title="Gitee"></a>
                            
                                <a class="fa V2EX" target="_blank" href="/mytpages/" title="V2EX"></a>
                            
                                <a class="fa 知乎" target="_blank" href="/mytpages/" title="知乎"></a>
                            
                                <a class="fa 网易云音乐" target="_blank" href="/mytpages/" title="网易云音乐"></a>
                            
                                <a class="fa bilibili" target="_blank" href="/mytpages/" title="bilibili"></a>
                            
                        </ul>
            </nav>
        </header>                
    </div>
    <link class="menu-list" tags="标签" friends="友情链接" about="关于我"/>
</nav>
      <div class="body-wrap"><article id="post-不会懂分布式系统的" class="article article-type-post" itemscope itemprop="blogPost">
  
    <div class="article-meta">
      <a href="/mytpages/2019/10/25/不会懂分布式系统的/" class="article-date">
      <time datetime="2019-10-25T08:25:38.000Z" itemprop="datePublished">2019-10-25</time>
</a>


    </div>
  
  <div class="article-inner">
    
      <input type="hidden" class="isFancy" />
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      不会懂分布式系统的
    </h1>
  

      </header>
      
      <div class="article-info article-info-post">
        
    <div class="article-category tagcloud">
    <a class="article-category-link" href="/mytpages/categories/desc/">desc</a>
    </div>


        
    <div class="article-tag tagcloud">
        <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/mytpages/tags/note/">note</a></li></ul>
    </div>

        <div class="clearfix"></div>
      </div>
      
    
    <div class="article-entry" itemprop="articleBody">
      
          
        <p>不可能搞懂的分布式系统。这里整理搜索文字。</p>
<a id="more"></a>
<p>原文地址有：<br><a href="https://www.jianshu.com/p/bc764647169c" target="_blank" rel="noopener">https://www.jianshu.com/p/bc764647169c</a><br><a href="http://www.ruanyifeng.com/blog/2018/07/cap.html" target="_blank" rel="noopener">http://www.ruanyifeng.com/blog/2018/07/cap.html</a></p>
<h3 id="定义"><a href="#定义" class="headerlink" title="定义"></a>定义</h3><p>最简单定义的分布式系统是一组计算机一起工作，以最终用户身份显示为一台计算机。<br>这些机器具有共享状态，并发操作，并可独立故障，而不会影响整个系统的正常运行时间。</p>
<h3 id="楔子-数据库"><a href="#楔子-数据库" class="headerlink" title="楔子-数据库"></a>楔子-数据库</h3><p>A.让我们来看一个数据库吧！传统的数据库存储在一台机器的文件系统上，无论何时你想要在其中读取/插入信息，都要直接与该机器的该数据库服务器通信。</p>
<p>B.为了分布这个数据库系统，我们需要让这个数据库同时在多台机器上运行，每台机器都称为这个分布式系统的节点。<br>用户必须能够与他选择的任何一台机器通信，如果他将一条记录插入节点＃1，那么它就能从节点＃3读取到该记录。</p>
<p>C.分布式系统使您能够做的是横向扩展。<br>回到我们前面的单个数据库服务器的例子，处理更多流量的唯一方法是升级运行数据库的硬件，这称为垂直缩放。尽管可以垂直缩放，但是在某个点之后，您会发现即使是最好的硬件也不足以提供足够的流量。<br>那么增加新机器来提供更多的流量，就属于水平缩放。关于水平缩放的最好的事情是，您无限制地扩展规模，只要性能下降，您只需添加另一台机器，最多可达到无限大。<br>轻松扩展并不是从分布式系统获得的唯一好处，容错和低延迟也同时得到受益。</p>
<p>D.但是，要使分布式系统正常工作，需要在这些机器上运行的软件专门设计用于可同时在多台计算机上运行，并处理随之而来的问题。事实证明，这并非易事。</p>
<h3 id="数据库再升级"><a href="#数据库再升级" class="headerlink" title="数据库再升级"></a>数据库再升级</h3><p>有一种方法可以提高读取性能，即通过所谓的主从复制策略。首先有一台master数据库服务器，然后新增两个可与master服务器同步数据库的slave服务器。<br>无论何时插入或修改信息，都只可以与master数据库通信。然后它会异步地通知slave服务器的变化，并将它们保存起来。<br>这产生的问题是你只能从这些slave服务器中读取。此时，我们立即失去了关系数据库的ACID保证中的C，它代表一致性。<br>分布式系统带来了一些折衷。如果你想充分扩展，这个特殊的问题是你必须忍受的。</p>
<p>使用从数据库方法，我们可以在一定程度上横向扩展读取流量。这很棒，但我们在写入流量方面遇到了一堵墙，因为它仍然在一台服务器上！<br>一种方法是采用多主复制策略。在那里，而不是只能读取的从站，您有多个支持读取和写入的主节点。<br>不幸的是，由于您现在有能力创建冲突（例如插入两个具有相同ID的记录），因此这会变得非常复杂。</p>
<p>让我们继续使用另一种称为分片 （sharding）的技术（也称为分区）。<br>通过分片，您可以将服务器分成多个较小的服务器，称为碎片。这些碎片都拥有不同的记录，并且您创建了哪种记录进入哪个碎片的规则。<br>虽然这很复杂，但是我们现在赢得了很多，我们可以将写入流量增加N倍，其中N是碎片的数量。<br>另外，现在我们通过分区键之外的键进行查询的效率非常低（他们需要遍历所有的分片）。而且SQL查询更加糟糕，而且复杂的查询实际上无法使用，比如JOIN查询。</p>
<h3 id="CAP-定理"><a href="#CAP-定理" class="headerlink" title="CAP 定理"></a>CAP 定理</h3><p>分布式系统的最大难点，就是各个节点的状态如何同步。<br>CAP定理是这方面的基本定理，也是理解分布式系统的起点。<br>1998年，加州大学的计算机科学家 Eric Brewer 提出，分布式系统有三个指标。Consistency，Availability，Partition tolerance它们的第一个字母分别是 C、A、P。<br>Eric Brewer 说，这三个指标不可能同时做到。这个结论就叫做 CAP 定理。</p>
<p>Partition tolerance:<br>中文叫做”分区容错”。一般来说，分区容错无法避免，因此可以认为 CAP 的 P 总是成立。CAP 定理告诉我们，剩下的 C 和 A 无法同时做到。</p>
<p>Consistency:<br>中文叫做”一致性”。意思是，写操作之后的读操作，必须返回该值。<br>举例来说，某条记录是v0，用户向G1发起一个写操作，将其改为v1。接下来，用户向G2发起的读操作也应该得到v1。这就叫一致性。<br>为了让G2也能变为v1，就要在G1写操作的时候，让G1向G2发送一条消息，要求G2也改成v1。这样的话，用户向G2发起读操作，也能得到v1。</p>
<p>Availability:<br>中文叫做”可用性”，意思是只要收到用户的请求，服务器就必须给出回应。<br>用户可以选择向G1或G2发起读操作。不管是哪台服务器，只要收到请求，就必须告诉用户，到底是v0还是v1，否则就不满足可用性。</p>
<p>一致性和可用性，为什么不可能同时成立？答案很简单，因为可能通信失败（即出现分区容错）。<br>如果保证 G2 的一致性，那么 G1 必须在写操作时，锁定 G2 的读操作和写操作。只有数据同步后，才能重新开放读写。锁定期间，G2 不能读写，没有可用性。<br>如果保证 G2 的可用性，那么势必不能锁定 G2，所以一致性不成立。<br>综上所述，G2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性，那么无法保证所有节点的可用性；如果追求所有节点的可用性，那就没法做到一致性。</p>
<h3 id="分布式系统类别"><a href="#分布式系统类别" class="headerlink" title="分布式系统类别"></a>分布式系统类别</h3><p>分布式数据存储：<br>分布式数据存储被广泛使用并被公认为分布式数据库。大多数分布式数据库都是NoSQL非关系数据库，仅限于键值语义。它们以一致性或可用性为代价提供令人难以置信的性能和可扩展性。</p>
<p>分布式服务器:<br>一般作为服务器的负载均衡处理方案。</p>
<p>分布式计算:<br>分布式计算是近年来我们见到的大数据处理流入的关键。它是将一项庞大的任务（例如总计1000亿条记录）分割成许多较小的任务的技术，其中任何一台计算机都不能单独执行，而每个任务都可以装入一台商品机器中。<br>您将您的庞大任务分解为许多较小的任务，让它们在多台机器上并行执行，合适地汇总数据，并解决了最初的问题。这种方法再次使您能够水平扩展，当您有更大的任务时，只需在计算中包含更多节点。</p>
<p>分布式文件系统:<br>分布式文件系统可以被认为是分布式数据存储。它们概念一样，在一组机器中存储和访问大量数据，所有这些数据都显示为一个整体。</p>
<p>分布式消息:<br>消息传递系统为整个系统内的消息/事件的存储和传播提供了一个中心位置。它们允许您将应用程序逻辑从直接与其他系统交谈中分离出来。</p>
<h3 id="分布式应用"><a href="#分布式应用" class="headerlink" title="分布式应用"></a>分布式应用</h3><p>分布式应用指的是应用程序分布在不同计算机上，通过网络来共同完成一项任务的工作方式。</p>
<p>这里以BT下载为例：<br>使用BitTorrent客户端，您可以连接到世界各地的多台计算机以下载文件。当你打开一个.torrent文件时，你连接到一个所谓的追踪器，这是一台充当协调器的机器。它有助于对等发现，向您显示网络中具有所需文件的节点。<br>你有两种类型的用户的概念，一个是一个leecher和一个播种机。leecher是正在下载文件的用户，而播种员是上传所述文件的用户。<br>关于点对点网络的有趣之处在于，作为普通用户，您有能力加入并贡献于网络。BitTorrent通过使播种机上传更多内容，给那些提供最佳下载速率的人来就近下载。<br>它通过激励您在下载文件的同时去上传文件。不幸的是，在你完成之后，没有什么能够让你在网络中保持活跃。<br>这导致在网络中缺少具有完整文件的播种器，并且由于协议严重依赖于这些用户。像私人跟踪器这样的解决方案已经实现，私人追踪器要求您成为社区成员（通常只有邀请）才能参与分布式网络。</p>
<h3 id="分布式账本"><a href="#分布式账本" class="headerlink" title="分布式账本"></a>分布式账本</h3><p>分布式账本是一种在网络成员之间共享、复制和同步的数据库。分布式账本记录网络参与者之间的交易，比如资产或数据的交换。这种共享账本消除了调解不同账本的时间和开支。<br>分布式分类帐是一个复制的共识,共享和同步数字数据在地理上分布在多个网站,国家,或机构。没有中心管理员或集中数据存储。</p>
<p>这里以区块链为例：<br>区块链是目前用于分布式账本的基础技术，实际上标志着它的开始。<br>分布式空间的这一最新和最伟大的创新使得创建了第一个真正的分布式支付协议 - 比特币。<br>区块链是一个分布式账本，它载有网络中发生的所有交易的有序列表。事务分组并存储在块中，整个区块链本质上是一个块链接列表。<br>每个块在创建时在计算上是昂贵的，并且通过密码学彼此紧密相关。简单地说，每个块包含当前块的内容加上前一个块的特殊散列。这个散列需要大量的CPU能力才能生产出来，因为唯一的办法就是通过暴力破解。<br>矿工是试图计算散列（通过暴力）的节点，矿工们相互竞争，谁可以拿出一个随机的字符串（称为随机数），当与内容结合时产生这个特殊散列。<br>一旦有人发现了正确的随机数，他将其广播到整个网络，所述字符串由每个节点自行验证并接受到它们的链中，发现者同时会得到一定的奖励。<br>具体的内容，可参考区块链，比特币相关内容。</p>

      
    </div>
    
  </div>
  
    


    <nav id="article-nav">
        
            <div id="article-nav-newer" class="article-nav-title">
                <a href="/mytpages/2019/10/31/引子-数据结构？？/">
                    引子-数据结构？？
                </a>
            </div>
        
        
            <div id="article-nav-older" class="article-nav-title">
                <a href="/mytpages/2019/10/24/MySql简单使用-adv/">
                    MySql简单使用-adv
                </a>
            </div>
        
    </nav>

  
</article>

    <div id="toc" class="toc-article">
        <strong class="toc-title">文章目录</strong>
        
            <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#定义"><span class="toc-number">1.</span> <span class="toc-text">定义</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#楔子-数据库"><span class="toc-number">2.</span> <span class="toc-text">楔子-数据库</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#数据库再升级"><span class="toc-number">3.</span> <span class="toc-text">数据库再升级</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#CAP-定理"><span class="toc-number">4.</span> <span class="toc-text">CAP 定理</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#分布式系统类别"><span class="toc-number">5.</span> <span class="toc-text">分布式系统类别</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#分布式应用"><span class="toc-number">6.</span> <span class="toc-text">分布式应用</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#分布式账本"><span class="toc-number">7.</span> <span class="toc-text">分布式账本</span></a></li></ol>
        
    </div>
    <style>
        .left-col .switch-btn,
        .left-col .switch-area {
            display: none;
        }
        .toc-level-3 i,
        .toc-level-3 ol {
            display: none !important;
        }
    </style>

    <input type="button" id="tocButton" value="隐藏目录"  title="点击按钮隐藏或者显示文章目录">

    <script>
        yiliaConfig.toc = ["隐藏目录", "显示目录", !!"false"];
    </script>



    
<div class="share">
    
        <div class="bdsharebuttonbox">
            <a href="#" class="fa fa-twitter bds_twi" data-cmd="twi" title="分享到推特"></a>
            <a href="#" class="fa fa-weibo bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
            <a href="#" class="fa fa-qq bds_sqq" data-cmd="sqq" title="分享给 QQ 好友"></a>
            <a href="#" class="fa fa-files-o bds_copy" data-cmd="copy" title="复制网址"></a>
            <a href="#" class="fa fa fa-envelope-o bds_mail" data-cmd="mail" title="通过邮件分享"></a>
            <a href="#" class="fa fa-weixin bds_weixin" data-cmd="weixin" title="生成文章二维码"></a>
            <a href="#" class="fa fa-share-alt bds_more" data-cmd="more"></i></a>
        </div>
        <script>
            window._bd_share_config={
                "common":{"bdSnsKey":{},"bdText":"不会懂分布式系统的　| Xbiubiubiu　","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
        </script>
    

    
</div>







    




    <div class="scroll" id="post-nav-button">
        
            <a href="/mytpages/2019/10/31/引子-数据结构？？/" title="上一篇: 引子-数据结构？？">
                <i class="fa fa-angle-left"></i>
            </a>
        

        <a title="文章列表"><i class="fa fa-bars"></i><i class="fa fa-times"></i></a>

        
            <a href="/mytpages/2019/10/24/MySql简单使用-adv/" title="下一篇: MySql简单使用-adv">
                <i class="fa fa-angle-right"></i>
            </a>
        
    </div>

    <ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/12/13/cpp：allocator-new/">cpp：allocator,new</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/28/CPP标准库-note/">CPP标准库-note</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/27/C与win32API/">C与win32API</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/27/C标准库-note/">C标准库</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/26/cpp的lib和dll/">cpp的lib和dll</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/25/编译cpp-vs2015/">编译cpp-vs2015</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/23/编译cpp-准备/">编译c++准备</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/18/simple-opengl/">simple opengl</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/15/cocos2dx-action/">cocos2dx-action</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/15/cocos2dx-schedule/">cocos2dx-schedule</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx在win32上写日志文件/">cocos2dx在win32上写日志文件</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx在win32上播放ogg/">cocos2dx在win32上播放ogg</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx字库缺失文字处理/">cocos2dx字库缺失文字处理</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/14/cocos2dx工作目录修改/">cocos2dx工作目录修改</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/13/cocos2dx-android/">cocos2dx-android</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/12/cocos2dx-win32/">cocos2dx-win32</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/11/Sublimer-Text/">Sublimer Text</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/07/潜意识？？设计模式/">潜意识？？设计模式</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/04/BST？AVL？红黑树？/">BST？AVL？红黑树？</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/11/01/几种排序算法示例代码/">几种排序算法示例代码</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/31/引子-基础算法？？/">引子-基础算法？？</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/31/引子-数据结构？？/">引子-数据结构？？</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/25/不会懂分布式系统的/">不会懂分布式系统的</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/24/MySql简单使用-adv/">MySql简单使用-adv</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/24/MySql简单使用/">MySql简单使用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/18/PS3-HEN破相关记录/">PS3-HEN破相关记录</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/09/测试使用云函数扩展码云page/">测试使用云函数扩展码云page</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/10/09/web3-单页Web应用/">web3.单页Web应用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/29/web2-简单网站的前后端分离/">web2.简单网站的前后端分离</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/29/web1-创建一个简单的网站/">web1.创建一个简单的网站</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/NodeJS-简单使用/">NodeJS 简单使用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/JavaScript-other/">JavaScript-other</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/JavaScript-模块/">JavaScript-模块</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/JavaScript-简单使用/">JavaScript 简单使用</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/27/github-gitee-chrome文件树插件/">github & gitee chrome文件树插件</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/26/markdown-简单使用/">markdown 简单使用示例</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/25/hello-world/">Hello World</a></li><li class="post-list-item"><a class="post-list-link" href="/mytpages/2019/09/24/zzTest-article0/">zzTest article0</a></li></ul>




    <script>
        
    </script>
</div>
      <footer id="footer">
    <div class="outer">
        <div id="footer-info">
            <div class="footer-left">
                <i class="fa fa-copyright"></i> 
                2019-2020 Ren ZM
            </div>
            <div class="footer-right">
                <a href="http://hexo.io/" target="_blank" title="快速、简洁且高效的博客框架">Hexo</a>  Theme <a href="https://github.com/MOxFIVE/hexo-theme-yelee" target="_blank" title="简而不减 Hexo 双栏博客主题  v3.5">Yelee</a> by MOxFIVE <i class="fa fa-heart animated infinite pulse"></i>
            </div>
        </div>
        
            <div class="visit">
                
                    <span id="busuanzi_container_site_pv" style='display:none'>
                        <span id="site-visit" title="本站到访数"><i class="fa fa-user" aria-hidden="true"></i><span id="busuanzi_value_site_uv"></span>
                        </span>
                    </span>
                
                
                    <span>| </span>
                
                
                    <span id="busuanzi_container_page_pv" style='display:none'>
                        <span id="page-visit"  title="本页阅读量"><i class="fa fa-eye animated infinite pulse" aria-hidden="true"></i><span id="busuanzi_value_page_pv"></span>
                        </span>
                    </span>
                
            </div>
        
    </div>
</footer>
    </div>
    
<script data-main="/mytpages/js/main.js" src="//cdn.bootcss.com/require.js/2.2.0/require.min.js"></script>

    <script>
        $(document).ready(function() {
            var iPad = window.navigator.userAgent.indexOf('iPad');
            if (iPad > -1 || $(".left-col").css("display") === "none") {
                var bgColorList = ["#9db3f4", "#414141", "#e5a859", "#f5dfc6", "#c084a0", "#847e72", "#cd8390", "#996731"];
                var bgColor = Math.ceil(Math.random() * (bgColorList.length - 1));
                $("body").css({"background-color": bgColorList[bgColor], "background-size": "cover"});
            }
            else {
                var backgroundnum = 5;
                var backgroundimg = "url(/mytpages//background/bg-x.jpg)".replace(/x/gi, Math.ceil(Math.random() * backgroundnum));
                $("body").css({"background": backgroundimg, "background-attachment": "fixed", "background-size": "cover"});
            }
        })
    </script>





<div class="scroll" id="scroll">
    <a href="#" title="返回顶部"><i class="fa fa-arrow-up"></i></a>
    <a href="#comments" onclick="load$hide();" title="查看评论"><i class="fa fa-comments-o"></i></a>
    <a href="#footer" title="转到底部"><i class="fa fa-arrow-down"></i></a>
</div>
<script>
    // Open in New Window
    
        var oOpenInNew = {
            
            
            
            
            
            
             archives: ".archive-article-title", 
             miniArchives: "a.post-list-link", 
            
             friends: "#js-friends a", 
             socail: ".social a" 
        }
        for (var x in oOpenInNew) {
            $(oOpenInNew[x]).attr("target", "_blank");
        }
    
</script>

<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js">
</script>
  </div>
</body>
</html>